package ThisTest;

/**
 *
 * This关键字的使用
 * 1.This可以用来修饰、调用：属性、方法、构造器
 *
 * 2.this修饰属性和方法
 *      此时this理解为当前对象，或当前正在创建的对象
 *
 *      在类的方法中，我们可以使用“this.属性”或“this.方法”的方式来调用属性或方法。
 *      但是通常情况下，我们都选择省略“this.”。特殊情况下，如果方法的形参和属性同名时
 *      我们必须显式的使用“this.变量”的方式，表明此变量是属性，而非形参
 *
 * 3.this调用构造器
 *      我们在类的构造器中，我们可以使用“this（形参列表）”方式，调用本类中指定的其他构造器
 *      构造器中不能通过“this.（形参列表）”调用自己
 *      如果一个类中有n个构造器，这则最多有n-1个构造器中使用了“this（形参列表）”
 *      规定：this（）调用构造器必须放在首行
 *
 * */

public class PersonTest {

    public static void main(String[] args) {
        Person p1 = new Person();
        p1.setAge(2);
        System.out.println(p1.getAge());

    }
}

class Person{

    private  String name;
    private  int age;

    public Person(){
        this.eat();
    }

    public Person(String name){
        this.name = name;
    }

    public Person(int age){
        this.age =age;
    }

    public Person(String name, int age){
        this.age = age;
        this.name = name;
    }

    public void setName(String name) {
         this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return this.age;
    }

    public void eat(){
        System.out.println("人吃饭");
    }

    public void study(){
        System.out.println("人学习");
    }
}
